###

call functions async

you can also specify a callback that gets the return value as param

###
tree.async.async_call = (func, callback) ->
    if callback 
        setTimeout(do () ->
            ret = func()
            callback ret
        , 1)
    else
        setTimeout(do () ->
            func()
        , 1)
